// #ifdef H5
var browser = {
    versions: function() {
        var u = navigator.userAgent,
        app = navigator.appVersion;
        return {
            mobile: !!u.match(/AppleWebKit.*Mobile.*/), //是否为移动终端
            ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios终端
            android: u.indexOf('Android') > -1 || u.indexOf('Adr') > -1, //android终端
            iPhone: u.indexOf('iPhone') > -1, //是否为iPhone或者QQHD浏览器
            iPad: u.indexOf('iPad') > -1, //是否iPad
        };
    }(),
    language: (navigator.browserLanguage || navigator.language).toLowerCase()
}

// #endif

/*
 函数名称：getLocation
 函数作用：获取地理位置
 调用方式：yb_location().then(res=>{
				console.log(res)
			}).catch(res=>{
				console.log(res)
			});
 */
export function ybLocation() {
	return new Promise((resolve,reject)=>{
		try{
			window.yibanhtml5location = function(postion) {
				try{
					var data = JSON.parse(postion)
					resolve(postion)
				}catch(e){
					if(e=="定位失败")
						reject('switch');
					else
						reject(postion);
				}
			}
			if(browser.versions.android) {
			    window.local_obj.yibanhtml5location();
			}else if(browser.versions.ios) {
			    ios_yibanhtml5location();
			}else {
			    reject('switch');
			}
		}catch(e){
			reject('switch');
		}
	})
}

/*
 函数名称：ybPhone
 函数作用：拨打电话
 参数说明：电话号码
 */
export function ybPhone(num) {
    var pre = /^1\d{10}$/;
    var tre = /^0\d{2,3}-?\d{7,8}$/;
    if (pre.test(num) || tre.test(num)) {
        if(browser.versions.android) {
            window.local_obj.phone(num);
        }else if(browser.versions.ios) {
            phone(num);
        }
    }
}

/*
 函数名称：ybMail
 函数作用：发邮件
 参数说明：email地址
 */
export function ybMail(email) {
    var re = /^(\w-*\.*)+@(\w-?)+(\.\w{2,})+$/
    if(re.test(email)) {
        if(browser.versions.android) {
            //android 调用方式
            window.local_obj.mail(email);
        }else if (browser.versions.ios) {
            mail(email);
        }
    }
}

/*
 函数名称：encode
 函数作用：扫一扫
 扫码注意：请确保二维码原始数据为字符串，必须包含“yiban_scan_result”字符串 才会返回，被捕捉 否则会当作url 跳转
 调用方式：ybEncode().then(res=>{
			//扫码·成功结果
 				console.log(res)
 			}).catch(res=>{
 				console.log(res)
 			});
 */
export function ybEncode() {
	return new Promise((resolve,reject)=>{
		window.getScanResult = function(info) {
			resolve(info);
		}
		if(browser.versions.android) {
		    window.local_obj.encode();
		}else if(browser.versions.ios) {
		    encode();
		}else {
		    reject('该终端类型暂不支持使用');
		}
	})
}


/*
 函数名称：ybBack
 函数作用：返回app
 */
export function ybBack() {
    if(browser.versions.android) {
        window.local_obj.back();
    }else if(browser.versions.ios) {
        back();
    }
}

/*
 函数名称：download
 函数作用：下载
 参数说明：地址
 */
export function ybDownload(vurl) {
	return new Promise((resolve,reject)=>{
		try{
			if(browser.versions.android) {
				window.local_obj.download(vurl);
			}else if(browser.versions.ios) {
				download(vurl);
			}
			resolve();
		}catch(e){
			reject('该终端类型暂不支持使用');
		}
	})
}

/*
 函数名称：ybPhoto
 函数作用：调用相册/拍照
 */
export function ybPhoto() {
	return new Promise((resolve,reject)=>{
		window.Q_camera_callback = function(info){
			var result = eval('('+ info +')');
			resolve(result.o);
		}
		if(browser.versions.android) {
		    window.local_obj.camera();
		}else if (browser.platform.ios) {
		    camera();
		}else{
			reject('该终端类型暂不支持使用');
		}
	})
}



/*
 函数名称：mobile_api
 函数作用：调用客户端开放交互，传值详见相关交互说明
 参数说明：{action:"",params:{}}
 */
export function mobile_api(jsonstr) {
    var tempJson = JSON.stringify(jsonstr);
    if(browser.versions.android) {
        window.local_obj.js2mobile(tempJson);
    }else if(browser.versions.ios) {
        js2mobile(tempJson);
    }
}
/*
 函数名称：ybUid
 函数作用：返回设备相对唯一标示码
 参数说明：易班app回调设定，无需用户调用
    result  字符串
 */
export function ybUid() {
    return new Promise((resolve,reject)=>{
		window.onlyid_back = function(res){
			try{
				var data = JSON.parse(res)
				resolve(data.value)
			}catch(e){
				reject('该终端类型暂不支持使用');
			}
		}
		try{
			mobile_api({action:'uuid',params:{},callback:'onlyid_back'});
		}catch(e){
			reject('该终端类型暂不支持使用');
		}
    })
}

/*
 函数名称：ybDevice
 函数作用：返回设备信息
 参数说明：易班app回调设定，无需用户调用
    result  Json  {"value":{"appVersion":"易班app版本", "deviceModel":"手机型号", "systemVersion":"手机系统版本"}
 */
export function ybDevice() {
    return new Promise((resolve,reject)=>{
		window.device_back = function(res){
			try{
				var data = JSON.parse(res)
				resolve(data.value)
			}catch(e){
				reject('该终端类型暂不支持使用');
			}
		}
		try{
			mobile_api({action:'yiban_device',params:{},callback:'device_back'})
		}catch(e){
			reject('该终端类型暂不支持使用');
		}
    })
}


export function nav(statusStyle='black'){
 	document.addEventListener("YibanDeviceReady", function () {
 		//易班JSSDK 已初始化完成
 		var config = {
 		    title: "", //网页标题 
 		    showShareButton: false, //是否显示分享按钮 默认是true
 		    statusStyle:statusStyle,//状态栏样式, 只支持 black, white
 		    backgroundColor:null,//导航栏背景色
 		    tintColor:'ffffff',//标题和返回按钮颜色 
 		    bottomLineColor:'',//底部线条颜色，如果传空表示隐藏，传值展示相应颜色，key都不带表示保存默认不变
 		    hideNavBar:true, //是否隐藏导航栏, 默认false
 		    transparentNavBar:true, //隐藏导航栏是否透明, 默认false
 		};
		mobile_api({action:'config_nav_bar',params:config});
		// setTimeout(function(){
		// 	mobile_api({action:'config_nav_bar',params:config});
		// },200)
 	});
	
 }
 
